import * as CryptoJS from 'crypto-js';

export function makeSalt() {
  /**
   * 该函数用于生成一个随机的盐值（salt），
   * 盐值是在加密过程中使用的一个随机字符串，用于增加密码的安全性。
   * 函数内部使用CryptoJS.lib.WordArray.random(16)生成一个16字节的随机数，
   * 并将其转换为Base64格式的字符串返回。
   */
  return CryptoJS.lib.WordArray.random(16).toString(CryptoJS.enc.Base64);
}

export function encryptWithSalt(secret: string, salt: string) {
  if (!secret || !salt) return '';
  /**
   * 该函数用于将给定的secret字符串使用给定的salt进行加密。
   * 首先会检查secret和salt是否为空，如果为空则返回空字符串。
   * 然后使用CryptoJS.PBKDF2函数进行加密操作，该函数使用PBKDF2算法对secret和salt进行加密，
   * 生成一个16字节的密钥。加密过程中使用了1000次迭代和16字节的密钥长度。
   * 最后将加密结果转换为Base64格式的字符串返回。
   */
  return CryptoJS.PBKDF2(secret, salt, {
    keySize: 16,
    iterations: 1000,
  }).toString(CryptoJS.enc.Base64);
}
